<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
	<h1>자바 표준 태그 라이브러리: JSTL</h1>
	<h3>i18n</h3>
	<p>포맷팅 태그: 숫자나 날짜를 특정형식으로 지정해서 출력</p>
	<p>formatNumber:문자를 숫자(정수, 실수, 통화, 퍼센트) 형태로 형식화해서 출력해줌</p>
	<p>formatDate: 날짜와 시간을 지정한 형식으로 출력</p>
	<p>parseNumber:문자를 숫자(정수,실수,통화,퍼센트)로 변환 출력</p>
	<p>requestEncoding:클라이언트의 요청 인코딩 설정</p>

	<p>
		<fmt:formatNumber value="12" />
	</p>
	<p>
		<fmt:formatNumber value="12" type="number" />
	</p>
	<p>
		<fmt:formatNumber value="12345" type="number" maxIntegerDigits="3" />
		(maxIntegerDigits:3)
	</p>
	<p>
		<fmt:formatNumber value="12.345" type="number" minFractionDigits="2" />
	</p>
	<p>
		<fmt:formatNumber value="12345.670" type="number" pattern=".00#" />
	</p>
	<p>
		<fmt:formatNumber value="12345.60" type="number" pattern="#,##00.0#" />
	</p>
	<p>
		<fmt:formatNumber value="0.12" type="percent" />
	</p>
	<p>
		<fmt:formatNumber value="0.12" type="percent" />
	</p>
	<p>
		<fmt:formatNumber value="12345" type="currency" />
	</p>

	<hr />

	<%--날짜와 시간을 다루기 위해 현재시간 및 날짜를 jsp:useBean을 이용해서 객체 형태로 생성해 둠 --%>
	<jsp:useBean id="now" class="java.util.Date" />
	<fmt:formatDate value="${now}" />
	<br />
	<fmt:formatDate value="${now}" dateStyle="short" />
	<br />
	<fmt:formatDate value="${now}" dateStyle="medium" />
	<br />
	<fmt:formatDate value="${now}" dateStyle="full" />
	<br />

	<fmt:formatDate value="${now}" type="time" />
	<fmt:formatDate value="${now}" type="time" timeStyle="short" />
	<fmt:formatDate value="${now}" type="time" timeStyle="medium" />
	<fmt:formatDate value="${now}" type="time" timeStyle="long" />
	<fmt:formatDate value="${now}" type="time" timeStyle="full" />

	<%-- 날짜/시간 출력시 자주 사용하는 패턴 문자열 
		 yyyy/yy:year, 4자리/2자리 년도 
		 MM: month, 월(1-12)
		 dd: day, 일(1-31)
		 a: am, pm, 오전/오후
		 hh: hour, 시
		 mm: minute, 분
		 ss: second, 초
	 --%>
	<fmt:formatDate value="${now}" type="both" timeStyle="full"
		dateStyle="full" />
	<fmt:formatDate value="${now}" type="both" timeStyle="full"
		pattern="yyyy.MM.dd" />
	<fmt:formatDate value="${now}" type="both" timeStyle="full"
		pattern="a hh-mm-ss" />

	<hr />

	<%
		Date today2 = new Date();
		DateFormat df = SimpleDateFormat.getDateInstance();
		out.println(df.format(today2) + "<br/>");

		df = SimpleDateFormat.getDateInstance(DateFormat.SHORT);
		out.println(df.format(today2) + "<br/>");
		df = SimpleDateFormat.getTimeInstance(DateFormat.MEDIUM);
		out.println(df.format(today2) + "<br/>");
		df = SimpleDateFormat.getTimeInstance(DateFormat.LONG);
		out.println(df.format(today2) + "<br/>");
		df = SimpleDateFormat.getTimeInstance(DateFormat.FULL);
		out.println(df.format(today2) + "<br/>");

		df = SimpleDateFormat.getDateTimeInstance();
		out.println(df.format(today2) + "<br/>");

		//패턴 문자열을 이용해서 날짜/시간을 출력하는 경우 SimpleDateFormat 클래스를 이용
		SimpleDateFormat sdf = new SimpleDateFormat();
		sdf.applyPattern("yyyy.MM.dd");
		out.println(sdf.format(today2) + "<br/>");

		sdf.applyPattern("a hh-mm-ss");
		out.println(sdf.format(today2) + "<br/>");
	%>

	<hr />
	<%
		String num = "123.45";
	%>
	<fmt:parseNumber var="num" value="<%=num%>" />
	<c:out value="${num}" />
	<br />
	<fmt:parseNumber var="num" integerOnly="true" value="<%=num%>" />
	<c:out value="${num}" />
	<br />
	<hr />
	<%
		//문자를 실수로 출력
		out.println(Float.parseFloat(num) + "<br/>");

		//문자를 정수로 출력
		//문자를 숫자로 변환하는 경우 정수이어야 하는데 실수이므로 오류!
		//parseInt 메서드를 이용해서 문자를 숫자로 변환하는 경우 입력값은 반드시 정수이어야 하는데 실수이므로 오류!!!
		//out.println(Integer.parseInt(num)+"<br/>");
		//->
		out.println((int) Float.parseFloat(num) + "<br/>");
	%>
	<%
		num = "123";
		out.println(Float.parseFloat(num) + "<br/>");
		out.println(Integer.parseInt(num) + "<br/>");
	%>
</body>
</html>